package com.mastercard.assets.web.struts.actions;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.mastercard.assets.jpa.TblAsset;
import com.mastercard.assets.jpa.TblAssetPaisRegional;
import com.mastercard.assets.jpa.TblCategoria;
import com.mastercard.assets.jpa.TblPaquete;
import com.mastercard.assets.jpa.TblSubcateg;
import com.mastercard.assets.util.MCUtil;
import com.mastercard.assets.util.dao.MasterCardDAO;
import com.mastercard.assets.web.struts.forms.AssetAltaForm;
import com.mastercard.assets.web.struts.forms.AssetBorrarForm;
import com.mastercard.assets.web.struts.forms.AssetBuscarForm;
import com.mastercard.assets.web.struts.forms.AssetEditarForm;
import com.mastercard.assets.web.struts.forms.AssetModificarPaquetesForm;
import com.mastercard.assets.web.struts.forms.LoginForm;
import com.mastercard.assets.web.util.to.ManejadorPaquetesDeAsset;
import com.mastercard.assets.web.util.to.UserLogin;

public class AssetsDetallePreparacion
	extends
		Action
{
	public ActionForward execute(
							ActionMapping mapping , 
							ActionForm form ,
							HttpServletRequest request , 
							HttpServletResponse response )
		throws 
			IOException , 
			ServletException
	{
		HttpSession session = request.getSession( ) ;
		
		// en caos de null
		if( session == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma el userLogin
		UserLogin user = ( UserLogin ) session.getAttribute( "UserLogin" ) ;
		int roleId = user.getActualRoleId( ) ;
		int cveUsuario = user.getCveUsuario() ;
		// en caso de null
		if( user == null )
			return mapping.findForward( "noLogin" ) ;
		
		// toma los elementos encontrados
		TblAsset asset = ( TblAsset ) request.getAttribute( "ItemFinded" ) ;
		
		try
		{
			// crea el Manejador de paquetes
			ManejadorPaquetesDeAsset packageManager = new ManejadorPaquetesDeAsset( ) ;
			
			// actualiza
			MCUtil.updatePackageManager( MasterCardDAO.getAllPackagesOfAsset( asset.getCveAsset( ) , 1 ) , packageManager ) ;
			
			// coloca en el request
			request.setAttribute( "PackageManager" , packageManager ) ;
			request.setAttribute( "AssetDetail" , asset ) ;
                        request.setAttribute( "pais" , user.getTblUsuario( ).getTblPais( ).getNombre( ) );
                        // REVISA SI EL ASSET FUE CREADO A PARTIR DE UN ASSET REGIIONAL
                        TblAssetPaisRegional tblAssetPaisRegional = MasterCardDAO.getRelacionAssetsRegionPais( asset.getCveAsset( ) ) ;
                        
                        if( tblAssetPaisRegional.getIdAssetPaisRegional( ) > 0 ) {
                            request.setAttribute( "origen" , "1" ) ;
                        } else {
                            request.setAttribute( "origen" , "0" ) ;
                        }
                            
			
		}catch( Exception e )
		{
                    MasterCardDAO.closeEntityManager( ) ;
			user.setMessageError( e.getMessage( ) ) ;
			
			user.setNextWorkArea( "/AssetsDetalleIn.do?cveAsset=" + asset.getCveAsset( ) ) ;
		}
		
		// en caso de que se cumpla, guarda el WorkArea
                request.setAttribute( "roleId" , roleId ) ;
		user.setNextWorkArea( "/WEB-INF/pages/WorkArea/AssetsDetalle.jsp" ) ;
		
                MasterCardDAO.closeEntityManager( ) ;
	  	return mapping.findForward( "success" ) ;
	}
	
}
